import createElement from './createElement.js';
import updateChildren from './updateChildren.js'
export default function patchVnode(newVnode, oldVnode) {
    // 判断oldVnode和newVnode是不是同一个节点
    if (oldVnode.key == newVnode.key && oldVnode.sel == newVnode.sel) {
        // 是同一个节点
        // 是不是内存中的同一个对象？
        if (oldVnode == newVnode) return;
        if (newVnode.text != undefined && (newVnode.children == undefined || newVnode.children.length == 0)) {
            //newVnode有text属性
            if (newVnode.text !== oldVnode.text) {
                oldVnode.elm.innerText = newVnode.text;
            }
            // newVnode没有text属性
        } else {
            // newVnode有children节点
            if (oldVnode.children != undefined && oldVnode.children.length > 0) {
                // oldVnode有children，newVnode有children
                // ★ 最 ★ 复 ★ 杂 ★ 的 ★ 情 ★ 况 ★
                // 创建一个新的函数单独处理
                updateChildren(oldVnode.elm, oldVnode.children, newVnode.children);
            } else {
                // oldVnode没有children节点
                oldVnode.elm.innerHTML = ''; //清空文本
                for (var i = 0; i < newVnode.children.length; i++) {
                    oldVnode.elm.appendChild(createElement(newVnode.children[i]));
                }
            }
        }
    } else {
        // 不是同一个节点
        // 暴力插入新的，删除旧的
        let newVnodeElm = createElement(newVnode);
        console.log(newVnode);
        // 插入老节点之前
        if (oldVnode.elm) {
            oldVnode.elm.parentNode.insertBefore(newVnodeElm, oldVnode.elm);
        }

        // 删除老节点
        oldVnode.elm.parentNode.removeChild(oldVnode.elm);
    }
}